import { configure, makeAutoObservable } from 'mobx';

configure({
  enforceActions: 'always'
});

class LocationStore {
  constructor() {
    makeAutoObservable(this, {}, {autoBind: true});
  }

  /**
   * 位置的title
   */
  title: string = '';
  /**
   * 位置地址
   */
  address: string = '';

  /**
   * 地点分类信息
   */
  category: string = '';

  /**
   * 纬度
   */
  latitude: number = 39.9042;

  /**
   * 经度
   */
  longitude: number = 116.4074;

  /**
   * 最小纬度
   */
  minLat: number = 0;

  /**
   * 最大纬度
   */
  maxLat: number = 0;

  /**
   * 最小经度
   */
  minLng: number = 0;

  /**
   * 最大经度
   */
  maxLng: number = 0;

  setMinLat(minLat: number) {
    this.minLat = minLat;
  };

  setMaxLat(maxLat: number) {
    this.maxLat = maxLat;
  };

  setMinLng(minLng: number) {
    this.minLng = minLng;
  };

  setMaxLng(maxLng: number) {
    this.maxLng = maxLng;
  };

  /**
   * 设置title
   * @param title 位置标题
   */
  setTitle(title: string) {
    this.title = title;
  }

  /**
   * 设置位置地址
   * @param address 位置地址
   */
  setAddress(address: string) {
    this.address = address;
  }

  /**
   * 设置地址分类信息
   * @param category 地址分类信息
   */
  setCategory(category: string) {
    this.category = category;
  }

  /**
   * 设置纬度
   * @param latitude 纬度
   */
  setLatitude(latitude: number) {
    this.latitude = latitude;
  }

  /**
   * 设置经度
   * @param logitude 经度
   */
  setLongitude(longitude: number) {
    this.longitude = longitude;
  }
}

const locationStore = new LocationStore();

export default locationStore;